#!/bin/bash
echo "===== 开始性能测试 ====="
# 记录开始时间
start_time=$(date +%s.%N)
# 权限检查
if [ "$EUID" -ne 0 ]; then
    echo "脚本必须以root用户运行"
    exit 1
fi
# 应用 tuned profile
echo "应用性能优化 profile"
tuned-profile offline-ssd &> /dev/null
if [ $? -ne 0 ]; then
    echo "Failed to apply tuned profile"
    exit 1
fi
# 调整内核参数以减少写回压力
sysctl -p <<-EOF
vm.dirty_ratio = 20
vm.writeback_min_pages = 32
vm.lowmem_reserve_ratio=4:20
EOF
# 收集指标并验证效果
memory_usage=$(free -m | awk '/Mem:/ {print $3}')
disk_io_write_back=$(iostat -d -k | grep sda | awk '{print $3}')
# 记录结束时间
end_time=$(date +%s.%N)
duration=$(echo "$end_time - $start_time" | bc)
echo "===== 测试摘要 ====="
echo "总执行时间: ${duration}秒"
echo "内存使用量: ${memory_usage}MB"
echo "磁盘写回操作次数: ${disk_io_write_back}"
# 结构化输出
echo "===== 性能指标 ====="
echo '{
    "total_time": "'$duration'",
    "memory_usage": "'$memory_usage'",
    "disk_io_write_back": "'$disk_io_write_back'"
}'
# 记录日志到文件
echo "脚本执行完成，结果已记录到当前目录下的 tuning_result.log" 
(printf "%s\n" "$(date +'%Y-%m-%d %H:%M:%S')" "调优后内存使用情况: $memory_usage MB" "磁盘写回操作次数: $disk_io_write_back") >> tuning_result.log
# 错误处理机制
trap 'exit 1' ERR
此脚本结合tuned和sysctl进行内存和磁盘I/O的调优，特别针对高写回导致的内存压力问题进行了优化。通过设置较低的脏数据比率和调整写回策略来减少对内存的压力，并验证了调优后的效果。